package com.xpq.petserver.util;

import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jws;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;

import java.util.Date;

public class JwtUtil {
    private static final String KEY = "poiuytrewq";
    // 过期时间，6小时
    private static final long TIME_OUT = 1000*60*60*6;

    /**
     * 生成token
     * @param userId 用户id
     * @return token
     */
    public static String getToken(String userId) {
        String token = Jwts.builder()
                .setId(userId)
                .setExpiration(new Date(System.currentTimeMillis() + TIME_OUT))
                .signWith(SignatureAlgorithm.HS512, KEY)
                .compact();
        return token;
    }

    /**
     * 校验token
     * @param token
     */
    public static void verify(String token) {
        Jwts.parser().setSigningKey(KEY).parseClaimsJws(token);
    }

    /**
     * 获取Claims对象，从而获取token中存储的信息
     * @param token token
     * @return Claims
     */
    public static Claims getClaims(String token) {
        Jws<Claims> claimsJws = Jwts.parser().setSigningKey(KEY).parseClaimsJws(token);
        return claimsJws.getBody();
    }

    public static String getId(String token) {
        return getClaims(token).getId();
    }

}
